/*******************************************************************************
 * Copyright (c) 2011 TXT e-solutions SpA
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * This work was performed within the IoT_at_Work Project
 * and partially funded by the European Commission's
 * 7th Framework Programme under the research area ICT-2009.1.3
 * Internet of Things and enterprise environments.
 *
 *
 * Authors:
 *     Cristoforo Seccia (TXT e-solutions SpA)
 *
 * Contributors:
 *      Domenico Rotondi (TXT e-solutions SpA)
 *******************************************************************************/
package it.txt.access.capability.wizard;

/**
 *
 * @author Cristoforo Seccia (TXT e-solutions SpA)
 */
public abstract class WizardPanelDescriptor {

    public static final String UNKNOW_PANEL_ID = "UNDEFINED";
    
    public static final String FINISH_PANEL_ID = "FINISH";

    private final int myOrdinalNumber;

    private final Wizard myWizard;

    public WizardPanelDescriptor(Wizard wizard, int ordinalNumber){
        myWizard = wizard;
        myOrdinalNumber = ordinalNumber;
    }

    protected final Wizard getWizard(){
        return myWizard;
    }

    public final int getWizardPanelOrdinalNumber(){
        return myOrdinalNumber;
    }

    /*
     * The descriptor identifier.
     */
    public abstract String getIdentifier();

    /*
     * The forwarding descriptor cannot be null.
     */
    public abstract String getNextIdentifier();

    /*
     * The backward identifier may be null; in this case
     * the Wizard uses the stored "previouse descriptor".
     */
    public abstract String getBackIdentifier();

    /*
     * The panel controller.
     */
    public abstract WizardPanelController getPanelController();

    /*
     * The panel name used in the left panel of the wizard.
     */
    public abstract String getCanonicalName();

    /*
     * The panel request confirm to go forward.
     */
    public abstract boolean isUserConfiramtionRequired();
}
